﻿using System.Collections.Generic;

namespace com.binance.client.model.enums
{
	 

	public sealed class EtfStatus
	{
	  public static readonly EtfStatus NORMAL = new EtfStatus("NORMAL", InnerEnum.NORMAL, "1");
	  public static readonly EtfStatus REBALANCING_START = new EtfStatus("REBALANCING_START", InnerEnum.REBALANCING_START, "2");
	  public static readonly EtfStatus CREATION_AND_REDEMPTION_SUSPEND = new EtfStatus("CREATION_AND_REDEMPTION_SUSPEND", InnerEnum.CREATION_AND_REDEMPTION_SUSPEND, "3");
	  public static readonly EtfStatus CREATION_SUSPEND = new EtfStatus("CREATION_SUSPEND", InnerEnum.CREATION_SUSPEND, "4");
	  public static readonly EtfStatus REDEMPTION_SUSPEND = new EtfStatus("REDEMPTION_SUSPEND", InnerEnum.REDEMPTION_SUSPEND, "5");

	  private static readonly IList<EtfStatus> valueList = new List<EtfStatus>();

	  static EtfStatus()
	  {
		  valueList.Add(NORMAL);
		  valueList.Add(REBALANCING_START);
		  valueList.Add(CREATION_AND_REDEMPTION_SUSPEND);
		  valueList.Add(CREATION_SUSPEND);
		  valueList.Add(REDEMPTION_SUSPEND);
	  }

	  public enum InnerEnum
	  {
		  NORMAL,
		  REBALANCING_START,
		  CREATION_AND_REDEMPTION_SUSPEND,
		  CREATION_SUSPEND,
		  REDEMPTION_SUSPEND
	  }

	  public readonly InnerEnum innerEnumValue;
	  private readonly string nameValue;
	  private readonly int ordinalValue;
	  private static int nextOrdinal = 0;

	  private readonly string code;

	  internal EtfStatus(string name, InnerEnum innerEnum, string code)
	  {
		this.code = code;

		  nameValue = name;
		  ordinalValue = nextOrdinal++;
		  innerEnumValue = innerEnum;
	  }

	  public override string ToString()
	  {
		return code;
	  }

//JAVA TO C# CONVERTER NOTE: Fields cannot have the same name as methods:EnumLookup

		public static IList<EtfStatus> values()
		{
			return valueList;
		}

		public int ordinal()
		{
			return ordinalValue;
		}

		public static EtfStatus valueOf(string name)
		{
			foreach (EtfStatus enumInstance in EtfStatus.valueList)
			{
				if (enumInstance.nameValue == name)
				{
					return enumInstance;
				}
			}
			throw new System.ArgumentException(name);
		}
	}

}